﻿using System;
using System.Data;
using System.Windows.Forms;
using BLO;
using DTO;

namespace QuanLyBanHang
{
    public partial class frmNhanVien : Form
    {
        private readonly NhanVien_Blo _nhanVienBlo = new NhanVien_Blo();
        private readonly Que_Blo _queBlo = new Que_Blo();

        public frmNhanVien()
        {
            InitializeComponent();
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            DialogResult dr = MessageBox.Show("Bạn muốn xóa nhân viên này!", "Thông báo"
                                              , MessageBoxButtons.YesNo, MessageBoxIcon.Warning);

            if (dr.Equals(DialogResult.No)) return;

            int result = _nhanVienBlo.DeleteObject(txtMaNV.Text);
            string msg = result > 0 ? "Xóa nhân viên thành công!" : "Xóa nhân viên không thành công!";
            MessageBox.Show(msg, "Thông báo", MessageBoxButtons.OK,
                            result > 0 ? MessageBoxIcon.Information : MessageBoxIcon.Error);
            if (result > 0) { 
                LoadData();
                btnLuu.Enabled = false;
                btnSua.Enabled = false;
            }
            
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            txtMaNV.Enabled = false;
            btnLuu.Enabled = true;
            btnThem.Enabled = false;
            btnXoa.Enabled = false;
            btnBoQua.Enabled = true;
            SetEnableInput(true);
        }


        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(cbbQue.SelectedValue.ToString()))
            {
                MessageBox.Show("Vui lòng chọn quê quán!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            int result = 0;
            string msg = "";

            if (string.IsNullOrEmpty(txtMaNV.Text))
            {
                result = _nhanVienBlo.AddObject(new NhanVien_Dto
                                                    {
                                                        GioiTinh = chkGioiTinh.Checked,
                                                        DiaChi = txtDiaChi.Text.Trim(),
                                                        MaNV =
                                                            "NV" +
                                                            _nhanVienBlo.AutoIncrementIDObject(),
                                                        NgaySinh = mskNgaySinh.Text,
                                                        MaQue = cbbQue.SelectedValue.ToString(),
                                                        SDT = mskDienThoai.Text,
                                                        TenNV = txtTenNV.Text.Trim()
                                                    });
                msg = result > 0 ? "Thêm nhân viên thành công!" : "Thêm nhân viên không thành công!";
                MessageBox.Show(msg, "Thông báo", MessageBoxButtons.OK,
                                result > 0 ? MessageBoxIcon.Information : MessageBoxIcon.Error);
                if (result < 0) return;
            }
            else
            {
                result = _nhanVienBlo.EditObject(txtMaNV.Text, new NhanVien_Dto
                                                                   {
                                                                       GioiTinh = chkGioiTinh.Checked,
                                                                       DiaChi = txtDiaChi.Text.Trim(),
                                                                       NgaySinh = mskNgaySinh.Text,
                                                                       MaQue = cbbQue.SelectedValue.ToString(),
                                                                       SDT = mskDienThoai.Text,
                                                                       TenNV = txtTenNV.Text.Trim()
                                                                   });
                msg = result > 0 ? "Cập nhập nhân viên thành công!" : "Cập nhập nhân viên thất bại!";
                MessageBox.Show(msg, "Thông báo", MessageBoxButtons.OK,
                                result > 0 ? MessageBoxIcon.Information : MessageBoxIcon.Error);
                if (result < 0) return;
            }


            LoadData();
            SetEnableInput(false);
            btnBoQua.Enabled = false;
            btnSua.Enabled = false;
            btnThem.Enabled = false;
            btnLuu.Enabled = false;
            btnThem.Enabled = true;
        }

        private void btnBoQua_Click(object sender, EventArgs e)
        {
            btnBoQua.Enabled = false;
            btnThem.Enabled = true;
            SetEnableInput(false);
            btnLuu.Enabled = false;
            LoadData();
        }

        private void btnDong_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            SetEnableInput(true);

            btnBoQua.Enabled = true;
            btnLuu.Enabled = true;
            btnThem.Enabled = false;
            btnXoa.Enabled = false;
            btnSua.Enabled = false;

            ResetInputValue();
        }

        private void dgvNhanVien_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            if (dgvNhanVien.Rows[e.RowIndex].Cells[0].Value == null || cbbQue.Enabled.Equals(true)) return;

            txtMaNV.Text = dgvNhanVien.Rows[e.RowIndex].Cells["MaNV"].Value.ToString();
            txtTenNV.Text = dgvNhanVien.Rows[e.RowIndex].Cells["TenNV"].Value.ToString();
            txtDiaChi.Text = dgvNhanVien.Rows[e.RowIndex].Cells["DiaChi"].Value.ToString();
            chkGioiTinh.Checked = bool.Parse(dgvNhanVien.Rows[e.RowIndex].Cells["GioiTinh"].Value.ToString());
            mskDienThoai.Text = dgvNhanVien.Rows[e.RowIndex].Cells["SDT"].Value.ToString();
            mskNgaySinh.Text = dgvNhanVien.Rows[e.RowIndex].Cells["NgaySinh"].Value.ToString();
            cbbQue.SelectedValue = dgvNhanVien.Rows[e.RowIndex].Cells["MaQue"].Value.ToString();

            btnSua.Enabled = true;
            btnXoa.Enabled = true;
        }

        private void frmNhanVien_Load(object sender, EventArgs e)
        {
            Utility.ComboboxUlt.LoadData(_queBlo.GetAllObject(), cbbQue
                , new[] { "TenQue", "MaQue" }, "Chọn quê");
            LoadData();
        }

        private void SetEnableInput(bool b)
        {
            txtTenNV.Enabled = b;
            cbbQue.Enabled = b;
            chkGioiTinh.Enabled = b;
            txtDiaChi.Enabled = b;
            mskDienThoai.Enabled = b;
            mskNgaySinh.Enabled = b;
        }

        private void ResetInputValue()
        {
            txtMaNV.Text = "";
            txtTenNV.Text = "";
            chkGioiTinh.Text = "";
            txtDiaChi.Text = "";
            mskDienThoai.Text = "";
            mskNgaySinh.Text = "";

            cbbQue.SelectedIndex = 0;
        }

        private void LoadData()
        {
            dgvNhanVien.DataSource = _nhanVienBlo.GetAllObject();
            dgvNhanVien.Columns["MaNV"].HeaderText = "Mã nhân viên";
            dgvNhanVien.Columns["TenNV"].HeaderText = "Tên nhân viên";
            dgvNhanVien.Columns["DiaChi"].HeaderText = "Địa chỉ";
            dgvNhanVien.Columns["GioiTinh"].HeaderText = "Giới tính";
            dgvNhanVien.Columns["MaQue"].HeaderText = "Quê quán";
            dgvNhanVien.Columns["SDT"].HeaderText = "Số điện thoại";
        }
    }
}